package com.wzy.Controller.admin;

import com.wzy.entity.Battle;
import com.wzy.service.BattleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import java.util.Date;

@Controller
@RequestMapping("/admin")
public class BattlesController {
    @Autowired
    private BattleService battleService;

    /**
     * 后台首页
     * @param page 页码
     * @param condition 查询条件
     * @return 模型和视图
     */
    @RequestMapping("/battle")
    public ModelAndView index(@RequestParam(value = "page",defaultValue = "1")Integer page, Battle condition){
        return new ModelAndView("admin/battle/battle")
                .addObject("pager",this.battleService.list(condition, page))
                .addObject("condition",condition);
    }

    /**
     * 跳转到新增页面
     * @return 跳转的页面
     */
    @GetMapping("/battle/append")
    public String goAppend(){
        return "admin/battle/append";
    }

    /**
     * 新增操作
     * @param battle 新增战役
     * @param attributes 重定向返回页面信息
     * @return 重定向到首页
     */
    @PostMapping("/battle/append")
    public String append(Battle battle, RedirectAttributes attributes){
        battle.setCreateTime(new Date());
        if(this.battleService.save(battle)){
            attributes.addFlashAttribute("message","新增成功！");
        }else{
            attributes.addFlashAttribute("message","新增失败！");
        }
        return "redirect:/admin/battle";
    }

    /**
     * 跳转到编辑页面
     * @Param model 向编辑页面传递信息
     * @return 跳转的页面
     */
    @GetMapping("/battle/modify")
    public String goModify(Long battleId,Model model){
        model.addAttribute("battle",this.battleService.getById(battleId));
        return "admin/battle/modify";
    }

    /**
     * 编辑操作
     * @param battle 编辑的战役对象
     * @param attributes 重定向返回页面信息
     * @return 重定向到首页
     */
    @PostMapping("/battle/modify")
    public String modify(Battle battle, RedirectAttributes attributes){
        if(this.battleService.updateById(battle)){
            attributes.addFlashAttribute("message","编辑成功！");
        }else{
            attributes.addFlashAttribute("message","编辑失败！");
        }
        return "redirect:/admin/battle";
    }

    /**
     * 删除战役
     * @param battleId 战役ID
     * @param attributes 重定向返回页面信息
     * @return 重定向到首页
     */
    @GetMapping("/battle/delete/{battleId}")
    public String delete(@PathVariable("battleId") Long battleId, RedirectAttributes attributes){
        if(this.battleService.removeById(battleId)){
            attributes.addFlashAttribute("message","删除成功！");
        }else{
            attributes.addFlashAttribute("message","删除失败！");
        }
        return "redirect:/admin/battle";
    }
}
